#!/usr/bin/env python3
"""
使用 pyttsx3 快速生成语音文件
不需要额外依赖，使用系统自带语音引擎
"""

import sys
import os
import pyttsx3

def tts_to_file(text, output_file, rate=150, volume=0.9):
    """
    将文本转换为语音并保存到文件
    
    Args:
        text: 要转换的文本
        output_file: 输出文件路径
        rate: 语速 (默认: 150)
        volume: 音量 (默认: 0.9)
    
    Returns:
        是否成功
    """
    # 创建输出目录
    os.makedirs(os.path.dirname(os.path.abspath(output_file)), exist_ok=True)
    
    try:
        # 初始化语音引擎
        engine = pyttsx3.init()
        
        # 设置属性
        engine.setProperty('rate', rate)     # 语速
        engine.setProperty('volume', volume) # 音量
        
        # 获取可用的声音
        voices = engine.getProperty('voices')
        for i, voice in enumerate(voices):
            print(f"声音 #{i}: {voice.name} ({voice.id}) [{voice.languages}]")
        
        # 使用中文声音(如果有)
        chinese_voice = None
        for voice in voices:
            if 'chinese' in voice.name.lower() or 'zh' in str(voice.languages).lower():
                chinese_voice = voice
                break
        
        if chinese_voice:
            print(f"使用中文声音: {chinese_voice.name}")
            engine.setProperty('voice', chinese_voice.id)
        
        # 转换文本到语音
        print(f"正在将文本转换为语音: {text}")
        engine.save_to_file(text, output_file)
        engine.runAndWait()
        
        print(f"语音文件已保存到: {os.path.abspath(output_file)}")
        return True
        
    except Exception as e:
        print(f"生成语音时出错: {e}")
        return False

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("使用方法: python quick_tts.py \"要转换的文本\" [输出文件名.wav]")
        sys.exit(1)
    
    text = sys.argv[1]
    output_file = sys.argv[2] if len(sys.argv) > 2 else "output.wav"
    
    # 确保输出文件有 .wav 扩展名
    if not output_file.lower().endswith('.wav'):
        output_file += '.wav'
    
    success = tts_to_file(text, output_file)
    sys.exit(0 if success else 1) 